home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1996 #6 / Amiga Plus CD - 1996 - No. 06.iso / pd / programmierung / asmprogs / asmfilter / asmfilter.bas next >
BASIC Source File  |  1987-10-25  |  3KB  |  111 lines

  1. GOTO s
  2. n:
  3. IF EOF(1) THEN beeper
  4. LINE INPUT# 1,a$
  5. IF LEFT$(a$,1) = " " THEN GOTO d
  6. a$ = RIGHT$(a$,LEN(a$)-8)
  7. t = 39
  8. WHILE t < LEN(a$)
  9. t = t + 1
  10. IF ASC(MID$(a$,t,1)) < 59 THEN GOTO anumber
  11. notnow:
  12. WEND
  13.  
  14.  
  15. FOR t = 40 TO LEN(a$)-1
  16. IF (MID$(a$,t,1)) <> "0" THEN GOTO notnow2
  17. IF MID$(a$,t-1,1) <> "$" THEN GOTO notnow2
  18. t3 = t
  19. zeroloop:
  20. IF t3 = LEN(a$)+1 THEN GOTO notnow2
  21. IF (MID$(a$,t3,1)) = "0" THEN t3 = t3 + 1 : GOTO zeroloop
  22. IF (ASC(MID$(a$,t3,1)) > 47 AND ASC(MID$(a$,t3,1)) < 59) OR (ASC(MID$(a$,t3,1)) > 64 AND ASC(MID$(a$,t3,1)) < 71) THEN a$ = LEFT$(a$,t-1) + RIGHT$(a$,LEN(a$)-t3+1) : t = t3 + 1
  23. notnow2:
  24. NEXT
  25. chars$ = ""
  26. t = 1
  27. charloop:
  28. IF MID$(a$,t,1) = " " THEN t = t + 1
  29. IF MID$(a$,t,1) = " " THEN GOTO exitcharloop
  30. FOR tc = 1 TO 2
  31. n = ASC(MID$(a$,t,1))
  32. IF n > 64 AND n < 71 THEN n = 16 * (n - 55) ELSE n = 16 * (n - 48) 
  33. t = t + 1
  34. n2 = ASC(MID$(a$,t,1))
  35. IF n2 > 64 AND n2 < 71 THEN n2 = n2 - 55 ELSE n2 = n2 - 48
  36. n = n + n2
  37. IF n < 32 OR n > 127 or n = 34 or n = 39 or n = 64 or n = 94 THEN n = 126
  38. chars$ = chars$ + CHR$(n)
  39. t = t + 1 
  40. NEXT tc
  41. GOTO charloop
  42. exitcharloop:
  43. a$ = RIGHT$(a$,LEN(a$)-26) + "   " + "; " + LEFT$(a$,25) + CHR$(34) + chars$ + CHR$(34)
  44. i$ = MID$(a$,30,3)
  45. PRINT# 2,a$
  46. IF i$ = "JMP" OR i$ = "RTS" OR i$ = "BRA" THEN PRINT# 2,""
  47. x = x + 1
  48. GOTO n
  49. exitloop:
  50. CLOSE
  51. END
  52. lline:
  53. PRINT #2,a$
  54. GOTO n
  55.  
  56. d:
  57. IF RIGHT$(a$,4) = "DATA" THEN LINE INPUT #1,a$ : GOTO n
  58. IF RIGHT$(a$,4) = "CODE" THEN LINE INPUT #1,a$ : GOTO n
  59. IF RIGHT$(a$,3) = "BSS" THEN  LINE INPUT #1,a$ :GOTO n
  60. WHILE LEFT$(a$,1) = " "
  61. a$ = RIGHT$(a$,LEN(a$)-1)
  62. WEND
  63. PRINT #2,a$
  64. GOTO n
  65.  
  66. anumber:
  67. IF ASC(MID$(a$,t,1)) < 48 THEN GOTO notnow
  68. t$ = MID$(a$,t-1,1)
  69. IF INSTR("- #,",t$) = 0 THEN GOTO notnow
  70. t3 = t
  71. thisnum = 0
  72. numloop:
  73. thisnum = thisnum * 10 + VAL(MID$(a$,t3,1))
  74. t3 = t3 + 1
  75. IF t3 > LEN(a$) THEN GOTO fall
  76. IF ASC(MID$(a$,t3,1)) > 47 AND ASC(MID$(a$,t3,1)) < 59 THEN GOTO numloop
  77. fall:
  78. IF thisnum = 0 THEN th$ = "0" ELSE th$ = HEX$(thisnum)
  79. a$ = LEFT$(a$,t-1) + "$" + th$ + RIGHT$(a$,LEN(a$)-t3+1)
  80. t = t3
  81. GOTO notnow
  82.  
  83. s:
  84.  
  85. PRINT "This program requires as input, the output from"
  86. PRINT "DISASM V1.005, by MetaComco"
  87. PRINT
  88. INPUT "NAME of INPUT file";infile$
  89. INPUT "Name of output file ";outfile$
  90. OPEN "i",1,infile$,10000
  91. OPEN "o",2,outfile$,10000
  92. IF EOF(1) THEN END
  93. LINE INPUT #1,a$
  94. IF LEFT$(a$,2) = "Di" THEN LINE INPUT #1,a$ : GOTO n
  95. CLOSE 1
  96. OPEN "i",1,infile$,10000
  97. GOTO n
  98.  
  99. beeper:
  100. CLOSE
  101. a$ = INKEY$
  102. WHILE INKEY$ = ""
  103. BEEP
  104. FOR t = 1 TO 4000
  105. NEXT
  106. WEND
  107. END
  108.  
  109. ' Copyright 1987 by Glen McDiarmid
  110. ' Use, modify and distribute freely